package com.lms.service;

import com.lms.entity.Admin;
import com.lms.vo.DataVo;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @author L-B-S
 * @create 2021/3/3 21:21
 * @desc 管理员业务逻辑层接口
 **/
public interface AdminService {

    /**
     * 登录业务
     *
     * @param username 登录用户名
     * @param password 登录密码
     * @return 登录请求返回json数据
     */
    DataVo<Admin> login(String username, String password);

    /**
     * 注册业务
     * @param admin 用户对象
     * @return 前端封装对象
     */
    DataVo<Admin> register(Admin admin);

    /**
     * 获取登录用户session数据
     *
     * @param admin 登录用户对象
     * @param page  当前页码
     * @param limit 每页记录数
     * @return 前端封装对象
     */
    DataVo<Admin> adminInfo(Admin admin, Integer page, Integer limit);

    /**
     * 短信验证码
     *
     * @param admin   登录对象实体
     * @param session 前端域对象
     * @return 前端封装对象
     */
    DataVo<Admin> sendMsg(Admin admin, HttpSession session);

    /**
     * 验证码验证
     *
     * @param code    前端输入验证码
     * @param session 前端域对象
     * @return 前端封装对象
     */
    DataVo<Admin> verify(String code, HttpSession session);

    /**
     * 重置密码
     *
     * @param password 新密码
     * @param session  前端域对象
     * @return 前端封装对象
     */
    DataVo<Admin> resetPwd(String password, HttpSession session);

    /**
     * 管理员身份验证
     * @param secretKey 密钥
     * @return 状态码
     */
    int adminAuth(String secretKey);

    /**
     * 获取用户列表信息
     * @param page 当前页
     * @param limit 每个记录数
     * @return 前端封装数据
     */
    DataVo<Admin> getList(Integer page, Integer limit);

    /**
     * 删除多个用户列表信息
     * @param adminList 用户列表
     * @return 前端封装数据
     */
    DataVo<Admin> delAdmins(List<Admin> adminList);
}
